package top.tenebrous.yzl.im.annotation;

import top.tenebrous.yzl.im.enums.ProducerType;

import java.lang.annotation.*;

/**
 * im生产者注解
 * 当实现 {@link top.tenebrous.yzl.im.sender.AbstractSenderHandler} 接口时
 * 需要加入该注解，指定该消息发生器的类型，如：rocketMQ、kafka...
 * 以便可用自动注入
 *
 * 如果未指定该注解，将默认问自定义类型
 *
 * 如果存在多个自定义类型的实现类，系统只会按照随机顺序，注册唯一自定义实现类
 *
 * @author yazhang6
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ImProducer {

    ProducerType type() default ProducerType.REDIS;

}
